package issr.market.controller;

import issr.market.db.impl.DBControllerImpl;
import issr.market.model.Utente;
import issr.market.utils.Utils;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.apache.struts2.rest.DefaultHttpHeaders;
import org.apache.struts2.rest.HttpHeaders;

public class AccessoController extends AbstractController {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6901161719481378179L;
	
	private Logger logger = Logger.getLogger(AccessoController.class);

	
	// GET /orders
    public HttpHeaders index() {
        
    String redirect = "login";
		
		HttpServletRequest request = getServletRequest();
		
		if(request.getParameter("fakeRole")!=null){
			request.getSession().setAttribute("fakeRole", request.getParameter("fakeRole"));
			int ruolo = Integer.valueOf(request.getParameter("fakeRole"));
			logger.info("Effettuo fake redirect per ruolo "+Utils.numRuoloToString(ruolo));
			redirect = Utils.redirectRole(ruolo);
		}
		else if(request.getSession().getAttribute("fakeRole")!=null){
			int ruolo = Integer.valueOf((String)request.getSession().getAttribute("fakeRole"));
			logger.info("Effettuo fake redirect per ruolo "+Utils.numRuoloToString(ruolo));
			redirect = Utils.redirectRole(ruolo);
		}
		else if(request.getSession().getAttribute("userLogged")!=null){
			//Redirect to proper page
			logger.info("Check per Utente Loggato. OK");
			Utente user = (Utente)request.getSession().getAttribute("userLogged");
			if(user!=null){ 
				logger.info("Eseguo redirect per ruolo "+user.getRuolo());
				redirect = Utils.redirectRole(user.getNumRuolo());
			}
		}
		else if(new DBControllerImpl().isEmptyUserDB())
			redirect = "creaAdminGen";
		
		logger.info("Redirect name from login: "+redirect);
		
		return new DefaultHttpHeaders(redirect).disableCaching();
		

    }
    
	public HttpHeaders create() {
		
		return index();
		}

	public HttpHeaders destroy() {
		return new DefaultHttpHeaders("login");
	}

	public HttpHeaders show() {
		return new DefaultHttpHeaders("login");
	}

	public HttpHeaders update() {
		return new DefaultHttpHeaders("login");
	}

	
	
}
